package com.cmdb.system.service;

import com.cmdb.system.domain.SysAssetInfo;
import com.cmdb.system.domain.vo.AssetStatisticsVO;

import java.util.List;

/**
 * 资产信息Service接口
 * 
 * @author 陈玉强
 * @date 2025-06-01
 */
public interface ISysAssetInfoService 
{
    /**
     * 查询资产信息
     * 
     * @param assetId 资产信息主键
     * @return 资产信息
     */
    public SysAssetInfo selectSysAssetInfoByAssetId(Long assetId);

    /**
     * 查询资产信息列表
     * 
     * @param sysAssetInfo 资产信息
     * @return 资产信息集合
     */
    public List<SysAssetInfo> selectSysAssetInfoList(SysAssetInfo sysAssetInfo);

    /**
     * 新增资产信息
     * 
     * @param sysAssetInfo 资产信息
     * @return 结果
     */
    public int insertSysAssetInfo(SysAssetInfo sysAssetInfo);

    /**
     * 修改资产信息
     * 
     * @param sysAssetInfo 资产信息
     * @return 结果
     */
    public int updateSysAssetInfo(SysAssetInfo sysAssetInfo);

    /**
     * 批量删除资产信息
     * 
     * @param assetIds 需要删除的资产信息主键集合
     * @return 结果
     */
    public int deleteSysAssetInfoByAssetIds(Long[] assetIds);

    /**
     * 删除资产信息信息
     * 
     * @param assetId 资产信息主键
     * @return 结果
     */
    public int deleteSysAssetInfoByAssetId(Long assetId);

    /**
     * 获取资产统计数据（可带过滤条件）
     */
    AssetStatisticsVO getAssetStatistics();
    AssetStatisticsVO getAssetStatistics(SysAssetInfo sysAssetInfo);

    /**
     * 导入资产信息数据
     * 
     * @param assetList 资产信息数据列表
     * @param updateSupport 是否支持更新，如果已存在，则进行更新数据
     * @return 结果
     */
    public String importAsset(List<SysAssetInfo> assetList, boolean updateSupport);

    /**
     * 根据资产ID数组查询资产信息
     * 
     * @param assetIds 资产ID数组
     * @return 资产信息列表
     */
    public List<SysAssetInfo> selectSysAssetInfoByAssetIds(Long[] assetIds);
}
